package main.old.new_2023.last.month_6;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * @Description:
 * //TODO 2465. 不同的平均值数目
     * 给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。
     * 只要 nums 不是 空数组，你就重复执行以下步骤：
     * 找到 nums 中的最小值，并删除它。
     * 找到 nums 中的最大值，并删除它。
     * 计算删除两数的平均值。
     * 两数 a 和 b 的 平均值 为 (a + b) / 2 。
     * 比方说，2 和 3 的平均值是 (2 + 3) / 2 = 2.5 。
     * 返回上述过程能得到的 不同 平均值的数目。
     * 注意 ，如果最小值或者最大值有重复元素，可以删除任意一个。
 * //todo 1. 两数之和
     * 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
     * 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
     * 你可以按任意顺序返回答案。
 * //todo 9. 回文数
     * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
     * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
     * 例如，121 是回文，而 123 不是。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/4
 * @Param:
 * @return:
 **/

public class Solution0604 {
    //不同的平均值数目
    public int distinctAveragesMy(int[] nums) {
        //排序
        int[] sortNums = Arrays.stream(nums).sorted().toArray();
        //创建存储平均值的list
        Set<Integer> doubles = new HashSet<>();
        //计算平均值
        for (int i = 0; i< sortNums.length / 2; i++){
            int min = sortNums[i];
            int max = sortNums[sortNums.length - 1-i];
            doubles.add(min + max);
        }
        return doubles.size();

    }

    //两数之和
    public int[] twoSum(int[] nums, int target) {
        int[]  result = new int[2];
        //
        for (int i=0;i < nums.length;i++){
            int min = nums[i];
            for (int j=nums.length -1 ;j > 0;j--){
                int max = nums[j];
                if (i == j){
                    break;
                }
                int value = max + min;
                if (value == target){
                    result[0] = i;
                    result[1] = j;
                    break;
                }
            }
        }
        return result;
    }

    //回文数
    public boolean isPalindrome(int x) {
        // 特殊情况：
        // 如上所述，当 x < 0 时，x 不是回文数。
        // 同样地，如果数字的最后一位是 0，为了使该数字为回文，
        // 则其第一位数字也应该是 0
        // 只有 0 满足这一属性
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int revertedNumber = 0;
        while (x > revertedNumber) {
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }

        // 当数字长度为奇数时，我们可以通过 revertedNumber/10 去除处于中位的数字。
        // 例如，当输入为 12321 时，在 while 循环的末尾我们可以得到 x = 12，revertedNumber = 123，
        // 由于处于中位的数字不影响回文（它总是与自己相等），所以我们可以简单地将其去除。
        return x == revertedNumber || x == revertedNumber / 10;
    }

    public static void main(String[] args) {
        int[] nums = {-10,-1,-18,-19};
        Solution0604 solu = new Solution0604();
        int[] ints = solu.twoSum(nums, -19);
        System.out.println(ints[0] + "---" + ints[1]);
    }

}
